The use of computers has become ubiquitous in everyday living. Most computer users are connected to networks, and have access to data and devices on those networks. When a user leaves his desktop, he typically relies on remote devices such as personal digital assistants (PDAs), “smart” cellular telephones, and other handheld devices to stay connected. Over the past few years, there has been a prodigious leap in the popularity of smart, connected remote devices.
The operating system that runs on remote devices is often a pared-down version of a full-scale desktop operating system. For example, some remote devices run on a variation of the Microsoft Windows operating system called Microsoft® Windows® CE. Windows® CE is a Windows-compatible real-time operating system that fills the need for a small, scalable operating system that works in a broad selection of embedded and non-embedded products. Windows® CE is based on the Microsoft Windows® operating system but is designed to be included or embedded in many mobile and other space-constrained devices. Others mobile remote devices run on the EPOC® operating system or have their own or another operating system.
The software that runs on the remote device is typically not a full-scale operating system because of constraints inherent in the remote device. In consequence, many features of the remote device operating system are not robust or highly available and the device is prone to crashes and hangs. To list just one example, there is no known robust method to get software onto the remote device. This situation is complicated by the fact that there are dozens of different remote devices so that knowing what kind of device it is, whether or not there is a need to push binaries to the remote device, which binaries are required and so on, is a non-trivial task.
It would be helpful if there were a way to provide more robust operating system features on a remote device despite the software storage limitations of the device. Specifically, it would be helpful if there were a way to enable efficient, robust implementation of software distributed between the desktop and the remote device.